package cn.ffcs.productdict.web;

import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;

import org.apache.commons.lang.StringUtils;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import org.springframework.dao.DataIntegrityViolationException;

import cn.ffcs.base.web.BaseAction;
import cn.ffcs.productdict.model.ProductDict;
/**
 * 福建省产品目录实体类：定义基本属性<br/>
 * <table>
 * <tr>
 * <td>负责人/principal:</td>
 * <td colspan="2">g.huangjx</td>
 * <tr>
 * <td>修改记录/revision:</td>
 * <td colspan="2"></td>
 * </tr>
 * <tr>
 * <td>日期:2009-2-26</td>
 * <td>修改人:g.huanjx</td>
 * <td>修改说明:</td>
 * </tr>
 * <tr>
 * <td></td>
 * <td></td>
 * <td></td>
 * </tr>
 * </table>
 * @author g.huangjx
 * @version $Id$
 */

public class ProductDictAction<D extends ProductDict> extends BaseAction<D>
{
    /** 动态网路标识 */
    private static final long serialVersionUID = -8246991977511117520L;

    /** 产品字典 **/
    private D productDict;
    
    /** 产品字典结果集 **/
    private List<D> productDicts;
    

    /**
     * 新增或修改产品产品字典数据
     * @return
     */
    public String saveOrUpdate()
    {
        baseService.saveOrUpdate(productDict);
        //lProductDictType=dictTypeService.findAll();  
        returnMsg="保存操作已成功！";
        return SUCCESS;
    }

    /**
     * 删除数据
     * @return
     */
    public String remove()
    {
//        try{
            baseService.remove(productDict);
            returnMsg="删除操作已成功！";
            return SUCCESS;
//        }catch(DataIntegrityViolationException e){
//            returnMsg="操作失败：数据正在使用中，不能删除！";
//            return "failure";
//        }
    }
    /**
     * 所有字典
     * @return
     */
    public String findByPageSelect(){
        productDicts=findBy();
        return SUCCESS;
    }
    /**
     * 批量删除
     * @return
     */
    public String batchDel() 
    {
//        try{
            String[] ids = getContextObjects("ids");
            baseService.batchDel(ids);
            returnMsg="批量删除操作已成功！";
//        }catch(DataIntegrityViolationException e){
//            returnMsg="操作失败：数据正在使用中，不能删除！";
//            return "failure";
//        }
        return SUCCESS;
    }

    /**
     * 根据关键值获取实体数据
     * @return
     */
    public String findById()
    {
        if (productDict != null && productDict.getId() != 0)
        {
            productDict = (D) baseService.findById(productDict.getId());
        }
        //lProductDictType=dictTypeService.findAll();        
        
        return SUCCESS;
    }

    /**
     * 
     * 组合查询条件
     * @return
     */
    public Criterion combineCond(){
        Criterion cond = null;
        if (super.getConds() != null)
        {
            //遍历参数表
            Iterator i = super.getConds().entrySet().iterator();
            while (i.hasNext())
            {
                Entry entry = (Entry)i.next();
                String key=(String)entry.getKey();
                if (super.getConds().get(key) != null
                        && !StringUtils.isEmpty(super.getConds().get(key).toString()))
                {
                    //根据实际情况做处理
                    Criterion temp=null;
                    if (key.equalsIgnoreCase("productProperty")){
                        temp=Restrictions.like(key, "%"+super.getConds().get(key).toString()+"%");
                    }else{
                        temp=Restrictions.eq(key, super.getConds().get(key));                        
                    }
                    
                    if (cond == null)
                    {
                        cond = temp;
                    }
                    else
                    {
                        cond = Restrictions.and(cond, temp);
                    }
                }
            }
        }
        return cond;
    }
    
    /**
     * 获取产品产品字典
     * @return
     */
    public D getProductDict()
    {
        return productDict;
    }

    /**
     * 设置产品产品字典
     * @param dict
     */
    public void setProductDict(D productDict)
    {
        this.productDict = productDict;
    }

    /**
     * 获取结果集
     * @return
     */
    public List<D> getProductDicts()
    {
        return productDicts;
    }

    /**
     * 设置结果集
     * @param dicts
     */
    public void setProductDicts(List<D> productDicts)
    {
        this.productDicts = productDicts;
    }




}
